package com.yxinsur.imc.business.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseImcEntity;

/**
 * 协议-产品费率对象 imc_contract_fee_rate
 *
 * @author imc
 * @date 2021-08-20
 */
public class ImcContractExpenseRate extends BaseImcEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 费率表主键
     */
    @TableId(type = IdType.INPUT)
    private Long id;

    /**
     * 险种表外键
     */
    @Excel(name = "险种表外键")
    private Long repoInsId;

    /**
     * 协议费用科目id imc_contract_expense的id
     */
    @Excel(name = "协议费用科目id imc_contract_expense的id")
    private Long contractExpenseId;

    /**
     * 缴费期间下限(含)
     */
    @Excel(name = "缴费期间下限(含)")
    private Integer chargePeriodLowerValue;

    /**
     * 缴费期间上限(含)
     */
    @Excel(name = "缴费期间上限(含)")
    private Integer chargePeriodUpperValue;


    /**
     * 保障期间-下限(含)
     */
    @Excel(name = "保障期间-下限(含)")
    private Integer coveragePeriodLowerValue;

    /**
     * 保障期间-上限(含)
     */
    @Excel(name = "保障期间-上限(含)")
    private Integer coveragePeriodUpperValue;


    /**
     * 领取年龄下限
     */
    @Excel(name = "领取年龄下限")
    private Integer pensionAgeLower;

    /**
     * 领取年龄上限
     */
    @Excel(name = "领取年龄上限")
    private Integer pensionAgeUpper;

    /**
     * 缴费频率类型
     */
    @Excel(name = "缴费频率类型")
    private String chargeIntervalEnum;

    /**
     * 保单年度下限(含)
     */
    @Excel(name = "保单年度下限(含)")
    private Integer payYearLower;

    /**
     * 保单年度上限(含)
     */
    @Excel(name = "保单年度上限(含)")
    private Integer payYearUpper;

    /**
     * 方案/保险计划 id  imc_ins_scheme的id
     */
    @Excel(name = "方案/保险计划 id  imc_ins_scheme的id")
    private Long insSchemeId;

    /**
     * 因子1值
     */
    @Excel(name = "因子1值")
    private String factor1Value;

    /**
     * 因子2值
     */
    @Excel(name = "因子2值")
    private String factor2Value;

    /**
     * 因子3值
     */
    @Excel(name = "因子3值")
    private String factor3Value;

    //生效日期
    @Excel(name="产品生效日期（起）")
    private Date startDate;

    //生效日期
    @Excel(name="产品生效日期（止）")
    private Date endDate;

    /**
     * 费率
     */
    @Excel(name = "费率")
    private BigDecimal rate;


    @Excel(name = "备注")
    private String remark;

    @Excel(name = "租户id")
    private Long tenantId;

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setRepoInsId(Long repoInsId) {
        this.repoInsId = repoInsId;
    }

    public Long getRepoInsId() {
        return repoInsId;
    }

    public void setContractExpenseId(Long contractExpenseId) {
        this.contractExpenseId = contractExpenseId;
    }

    public Long getContractExpenseId() {
        return contractExpenseId;
    }

    public void setChargePeriodLowerValue(Integer chargePeriodLowerValue) {
        this.chargePeriodLowerValue = chargePeriodLowerValue;
    }

    public Integer getChargePeriodLowerValue() {
        return chargePeriodLowerValue;
    }

    public void setChargePeriodUpperValue(Integer chargePeriodUpperValue) {
        this.chargePeriodUpperValue = chargePeriodUpperValue;
    }

    public Integer getChargePeriodUpperValue() {
        return chargePeriodUpperValue;
    }


    public void setCoveragePeriodLowerValue(Integer coveragePeriodLowerValue) {
        this.coveragePeriodLowerValue = coveragePeriodLowerValue;
    }

    public Integer getCoveragePeriodLowerValue() {
        return coveragePeriodLowerValue;
    }

    public void setCoveragePeriodUpperValue(Integer coveragePeriodUpperValue) {
        this.coveragePeriodUpperValue = coveragePeriodUpperValue;
    }

    public Integer getCoveragePeriodUpperValue() {
        return coveragePeriodUpperValue;
    }

    public void setPensionAgeLower(Integer pensionAgeLower) {
        this.pensionAgeLower = pensionAgeLower;
    }

    public Integer getPensionAgeLower() {
        return pensionAgeLower;
    }

    public void setPensionAgeUpper(Integer pensionAgeUpper) {
        this.pensionAgeUpper = pensionAgeUpper;
    }

    public Integer getPensionAgeUpper() {
        return pensionAgeUpper;
    }

    public void setChargeIntervalEnum(String chargeIntervalEnum) {
        this.chargeIntervalEnum = chargeIntervalEnum;
    }

    public String getChargeIntervalEnum() {
        return chargeIntervalEnum;
    }

    public void setPayYearLower(Integer payYearLower) {
        this.payYearLower = payYearLower;
    }

    public Integer getPayYearLower() {
        return payYearLower;
    }

    public void setPayYearUpper(Integer payYearUpper) {
        this.payYearUpper = payYearUpper;
    }

    public Integer getPayYearUpper() {
        return payYearUpper;
    }

    public void setInsSchemeId(Long insSchemeId) {
        this.insSchemeId = insSchemeId;
    }

    public Long getInsSchemeId() {
        return insSchemeId;
    }

    public void setFactor1Value(String factor1Value) {
        this.factor1Value = factor1Value;
    }

    public String getFactor1Value() {
        return factor1Value;
    }

    public void setFactor2Value(String factor2Value) {
        this.factor2Value = factor2Value;
    }

    public String getFactor2Value() {
        return factor2Value;
    }

    public void setFactor3Value(String factor3Value) {
        this.factor3Value = factor3Value;
    }

    public String getFactor3Value() {
        return factor3Value;
    }

    public void setRate(BigDecimal rate) {
        this.rate = rate;
    }

    public BigDecimal getRate() {
        return rate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Long getTenantId() {
        return tenantId;
    }

    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("repoInsId", getRepoInsId())
                .append("contractExpenseId", getContractExpenseId())
                .append("chargePeriodLowerValue", getChargePeriodLowerValue())
                .append("chargePeriodUpperValue", getChargePeriodUpperValue())
                .append("coveragePeriodLowerValue", getCoveragePeriodLowerValue())
                .append("coveragePeriodUpperValue", getCoveragePeriodUpperValue())
                .append("pensionAgeLower", getPensionAgeLower())
                .append("pensionAgeUpper", getPensionAgeUpper())
                .append("chargeIntervalEnum", getChargeIntervalEnum())
                .append("payYearLower", getPayYearLower())
                .append("payYearUpper", getPayYearUpper())
                .append("insSchemeId", getInsSchemeId())
                .append("factor1Value", getFactor1Value())
                .append("factor2Value", getFactor2Value())
                .append("factor3Value", getFactor3Value())
                .append("rate", getRate())
                .append("remark",getRemark())
                .append("createId", getCreateId())
                .append("createTime", getCreateTime())
                .append("updateId", getUpdateId())
                .append("updateTime", getUpdateTime())
                .append("isDeleted", getIsDeleted())
                .append("tenantId",getTenantId())
                .toString();
    }
}
